package com.yq.day18._05objectapi._02equals;

import java.util.Objects;

/**
 * @author 3307235355@qq.com
 * @since 2022/06/18 21:03
 * 该方法是有参数的，需要传入一个对象（任意一个对象就行）
 * 方法是有返回值的，返回一个布尔类型的值，真或假。
 * 指示其他某个对象是否与此对象"相等"。
 * 此对象即调用该equals方法的对象，其它对象即方法实参传入的对象。
 * <p>
 * <p>
 * 默认的比较方式 == 比较的是地址
 * 这个比较规则非常简单。双等号直接连接引用，比较对象的地址，换句话说是比较两个引用是否指向同一个对象
 * <p>
 * <p>
 * 所以我们需要对equals 进行重写的
 */
public class Demo01 {
    private int a;
    private int b;

    public Demo01(int a, int b) {
        this.a = a;
        this.b = b;
    }

    public static void main(String[] args) {
        Demo01 d1 = new Demo01(10,10);
        Demo01 d2 = new Demo01(10,1);
        System.out.println(d1.equals(d2));


    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Demo01 demo01 = (Demo01) o;
        return a == demo01.a &&
                b == demo01.b;
    }

    @Override
    public int hashCode() {
        return Objects.hash(a, b);
    }
}
